package com.sinya.shoppingmall.fragment;

import android.content.Context;
import android.os.Bundle;
import android.support.annotation.Nullable;
import android.support.v4.app.Fragment;
import android.support.v4.widget.SlidingPaneLayout;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;

import com.sinya.shoppingmall.TableActivity;

/**
 * @author KoizumiSinya
 * @date 2015/12/24.
 */
public abstract class BaseFragment extends Fragment {

    protected Context mContext;
    protected View rootView;
    protected SlidingPaneLayout mSlidingPaneLayout;

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        mContext = getActivity();

        initData();
        //先获取左侧菜单实例化对象，后面有交互的地方
        getSlidingPaneLayout();
    }

    @Nullable
    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
        rootView = initView();
        setView();
        setTitle();

        return rootView;
    }


    /**
     * 由子类根据需求继承
     * 用来设置刚刚进入Fragment的时候 需要获取传递的数据
     * 比如 Intent\Bundler 数据
     */
    protected void initData() {

    }

    /**
     * 由子类根据需求继承
     * 可用来设置标题文本
     */
    protected void setTitle() {

    }

    /**
     * 从主页面TableActivity获取SlidingPaneLayout控件实例对象
     */
    private void getSlidingPaneLayout() {
        if (getActivity() instanceof TableActivity) {
            TableActivity activity = (TableActivity) getActivity();
            this.mSlidingPaneLayout = activity.getSlidingPaneLayout();
        }
    }

    // [+] 抽象方法

    /**
     * 子类必须继承
     * 用于返回一个View显示，作为根布局（可以是xml文件，亦可以是自定义控件）
     *
     * @return
     */
    protected abstract View initView();

    /**
     * 子类必须继承
     * 可用于设置初始化布局控件
     */
    protected abstract void setView();

    // [-] 抽象方法
    // [+] Override
    //页面切换的过程中可以通过onResume方法重新加载数据，显示页面
    @Override
    public void onResume() {
        initData();
        super.onResume();
    }

    // [-] Override

}
